const express = require('express')
//创建一个路由
const route = express.Router(); 
//引入数据库
const adminModel = require('../db/model/adminModel')
//引入加密
const md5 = require('md5')

//引入正则中间件
const addAdminReg = require('../middleware/addAdminReg')

//引入路由校验文件
const isLoginMiddle = require('../middleware/isLoginMiddle')
//添加正则表达式中间件 addAdminReg
route.post('/addAdmin',isLoginMiddle, addAdminReg, async (req, res) => {
  //获取前台请求的数据  进行一个解构赋值 
  //console.log(req.body);
  const { adminName, password, regTime } = req.body
  //拿到前台数据之后做判断 如果数据库有该数据则提示用户 没有该数据则增加

  try {
    //拿着用户名去数据库寻找是否存在 find 返回的是一个空数组 空数组也是有值的所以在判断的时候谨慎 用findOne 如果没有则返回null
    const findResult = await adminModel.findOne({ adminName })
    //如果查询到数据库有该数据则直接响应已被注册
    if (findResult) {
      return res.send({
        code: 10001,
        mesage: '管理用户名已被注册',
        data: null
      })
    }
    //如果没有该用户 则向数据库添加这个数据,这里的名字要与数据库的名字保持一致
    const createResult = await adminModel.create({
      adminName,
      password: md5(password + 'admin'), //加密
      regTime
    })
    console.log('添加信息', createResult);
    //做出响应
    res.send({
      code: 10000,
      mesage: "管理员注册成功",
      data: null
    })
  } catch (e) {
    console.log('错误', e.message);
    res.send({
      code: 10002,
      mesage: '添加管理员出现异常' + e.message,
      data: null
    })
  }
})

//暴露出去
module.exports = route